In many instances, video streams undergo compression (coding) to facilitate storage and transmission. Not infrequently, such coded video streams incur data losses or become corrupted during transmission because of channel errors and/or network congestion. Upon decoding, the loss/corruption of data manifests itself as missing pixel values within one or more macroblocks within the decoded image. To reduce artifacts attributable to such missing/corrupted pixel values, a decoder will “conceal” such missing/corrupted pixel values by estimating the values from other macroblocks in the same image or from another image. The term conceal is a somewhat of a misnomer because the decoder does not actually hide missing or corrupted pixel values.
Spatial concealment seeks to derive the missing/corrupted pixel values by using pixel values from other areas in the same image in reliance on the similarity between neighboring regions in the spatial domain. In contrast to spatial error concealment, temporal concealment attempts the recovery of the coded motion information, namely the reference picture indices and the motion vectors, to estimate the missing pixel values from at least one previously transmitted macroblock. When the errors do not affect isolated macroblocks but groups of contiguous macroblocks, concealing errors can require using information from already concealed blocks. The concealment of lost slices, as defined in the Main Profile of the ISO/ITU H.264 standard for video compression, exemplifies a typical situation requiring the use of information from previously concealed macroblocks. However, such a strategy tends to propagate errors and compromises the quality of the restored image.
One approach to overcoming this difficulty proposes to conceal entire columns of macroblocks, progressing inwards from the boundaries of the image towards the center. The macroblocks on the left and the macroblocks on the right undergo concealment independently of each other. Similarly, concealment within each column progresses independently up and down until the concealed macroblocks meet in the middle. This approach reduces error propagation by concealing the center of the image, which is typically difficult to predict but is visually important, at the end of the process. However, accomplishing concealment in this manner reduces the ability to propagate meaningful information from left to right and vice versa. Macroblocks on the left side of the image are predicted with no information coming from the right and vice versa. Such behavior makes the propagation of diagonal contours across the missing region difficult.
Thus, there is a need for a technique that accomplishes error concealment while overcoming the aforementioned drawback.